Chapter 3 The transmission loss profiles

3.1 The 2019 transmission loss profile

A transmissions loss profile is calculated from the difference between the EGAT net electricity generation and the EGAT electricity sale profile (see equation (3.1))

\[\begin{equation} LSS_{i,t,h} = EGTNETGEN_{i,t,h} - EGTSLE_{i,t,h} \tag{3.1} \end{equation}\]

Where, \(LSS_{i,t,h}\) denotes a transmission loss profile in region \(i\) in year \(t\) at time stamp \(h\) (MW).
\(EGTNETGEN_{i,t,h}\) denotes a EGAT net generation profile in region \(i\) in year \(t\) at time stamp \(h\) (MW) (see equation (2.5)).
\(EGTSLE_{i,t,h}\) denotes the electricity EGAT sale (\(EGTSLE\)) profile in year \(t\) at time stamp \(h\) (MW) (see equation (2.4)).

profile <-
  
  profiledata$`egt_netgen_2019` %>%
  mutate(egt_sle = profiledata$egtsle_2019$egt_sle,
         tran_loss = egt_netgen - egt_sle) %>% 
  select(-egt_netgen, -egt_sle)

# Summary data ####
maxv <- ceiling(max(profile$tran_loss)) # Get a peak MW
minv <- floor(min(profile$tran_loss)) # Get a min MW
energy <- sum(profile$tran_loss)/2000 # Calculate the energy
peak_day <- profile %>% #Find a peak day
  group_by(year) %>% 
  filter(tran_loss == max(tran_loss)) %>% 
  pull(datetime)
min_day <- profile %>% #Find a min day
  group_by(year) %>% 
  filter(tran_loss == min(tran_loss)) %>% 
  last() %>%  
  pull(datetime)
load_factor <- percent((energy*10^3)/(maxv*8760), 
                       accuracy = 0.01, 
                       decimal.mark = ".")
summary <- tibble(peak_day = peak_day,
                  min_day = min_day,
                  peak_mw = maxv, 
                  min_mw = minv, 
                  energy_gwh = energy,
                  load_factor = load_factor) # combine all data in 1 table
Table 3.1: Summary of a transmission loss profile in 2019
peak_day min_day peak_mw min_mw energy_gwh load_factor
2019-06-22 19:00:00 2019-01-26 12:00:00 1666 -1017 3005.719 20.60%
profile_plot <-
  ggplot() + 
  geom_line(data=profile, 
            aes(x = datetime, 
                y = tran_loss,
                group = month,
                color = as.factor(month)),
            show.legend = FALSE) +
  ThemeLine +
  labs(x = NULL,
       y = "Transmission loss & use (MW)")+
  scale_x_datetime(breaks=date_breaks("1 month"), 
                   labels=date_format("%b %y")) +
  scale_y_continuous(breaks = seq(round(minv,-3), round(maxv,-3)*1.2,200),
                     limits = c(round(minv,-3)*1.1, round(maxv, -3)*1.1)) +  
  scale_color_manual(values = linepalette1) +
  geom_point(data=summary,
             aes(x = peak_day, y = peak_mw))+
  geom_hline(yintercept = 0) +
  geom_text(data = summary,
            aes(x = peak_day, y = round(maxv, -3)*1.05),
            label = glue("Peak {maxv} MW \n@ {peak_day}"),
            hjust = 0.5) +
  geom_point(data=summary,
             aes(x = min_day, y = min_mw))+
  geom_text(data = summary,
            aes(x = min_day, y = round(minv, -3)*0.8),
            label = glue("Minimum {minv} MW \n@ {min_day}"),
            hjust = 0,
            vjust = 0)

# Save the output ####
outputfigure <- paste0(outfigdir, "tran_loss_2019.png")
ggsave(profile_plot, file = outputfigure, dpi = 150, width = 15, height = 5, units = "in", limitsize = FALSE)
profiledata <- c(profiledata, list("tran_loss_2019" = profile))
profilefigure <- c(profilefigure, list("tran_loss_2019" = profile_plot))
summarydata <- c(summarydata, list("sum_tran_loss_2019" = summary))

The 2019 transmission loss profile is illustrated in Figure 3.1.

Figure 3.1: The transmission loss profile in 2019.

###The 2019 MEA transmission loss and use profile

profile <-
  
  profiledata$mea_requirement_2019 %>%
  mutate(mea_egt_sle = profiledata$mea_egtsle_2019$MEA,
         mea_tran_loss = MAC - mea_egt_sle) %>% 
  select(-MAC, -mea_egt_sle)

# Summary data ####
maxv <- ceiling(max(profile$mea_tran_loss)) # Get a peak MW
minv <- floor(min(profile$mea_tran_loss)) # Get a min MW
energy <- sum(profile$mea_tran_loss)/2000 # Calculate the energy
peak_day <- profile %>% #Find a peak day
  group_by(year) %>% 
  filter(mea_tran_loss == max(mea_tran_loss)) %>% 
  pull(datetime)
min_day <- profile %>% #Find a min day
  group_by(year) %>% 
  filter(mea_tran_loss == min(mea_tran_loss)) %>% 
  last() %>%  
  pull(datetime)
load_factor <- percent((energy*10^3)/(maxv*8760), 
                       accuracy = 0.01, 
                       decimal.mark = ".")
summary <- tibble(peak_day = peak_day,
                  min_day = min_day,
                  peak_mw = maxv, 
                  min_mw = minv, 
                  energy_gwh = energy,
                  load_factor = load_factor) # combine all data in 1 table
Table 3.2: Summary of a MEA transmission loss profile in 2019
peak_day min_day peak_mw min_mw energy_gwh load_factor
2019-12-19 08:30:00 2019-07-01 1633 75 9319.783 65.15%
profile_plot <-
  ggplot() + 
  geom_line(data=profile, 
            aes(x = datetime, 
                y = mea_tran_loss,
                group = month,
                color = as.factor(month)),
            show.legend = FALSE) +
  ThemeLine +
  labs(x = NULL,
       y = "MEA transmission loss & use (MW)")+
  scale_x_datetime(breaks=date_breaks("1 month"), 
                   labels=date_format("%b %y")) +
  scale_y_continuous(breaks = seq(round(minv,-3), round(maxv,-3)*1.2,200),
                     limits = c(round(minv,-3)*1.1, round(maxv, -3))) +  
  scale_color_manual(values = linepalette1) +
  geom_point(data=summary,
             aes(x = peak_day, y = peak_mw))+
  # geom_hline(yintercept = 0) +
  geom_text(data = summary,
            aes(x = peak_day, y = round(maxv, -3)),
            label = glue("Peak {maxv} MW \n@ {peak_day}"),
            hjust = 0.8,
            vjust = 1) +
  geom_point(data=summary,
             aes(x = min_day, y = min_mw))+
  geom_text(data = summary,
            aes(x = min_day, y = round(minv, -3)*0.8),
            label = glue("Minimum {minv} MW \n@ {min_day}"),
            hjust = 0,
            vjust = 0)

# Save the output ####
outputfigure <- paste0(outfigdir, "mea_tran_loss_2019.png")
ggsave(profile_plot, file = outputfigure, dpi = 150, width = 15, height = 5, units = "in", limitsize = FALSE)
profiledata <- c(profiledata, list("mea_tran_loss_2019" = profile))
profilefigure <- c(profilefigure, list("mea_tran_loss_2019" = profile_plot))
summarydata <- c(summarydata, list("sum_mea_tran_loss_2019" = summary))

The 2019 MEA transmission loss profile is illustrated in Figure 3.2.

Figure 3.2: The MEA transmission loss profile in 2019.